#if !defined(_APP_POOL)
#define _APP_POOL

#define  MAX_THREAD_NUM 10
#define  POOL_QUEUE_NAME "/gateway_pool_queue"

typedef struct
{
    void *(*task_func)(void *); // 任务函数
    void *task_arg;  //任务参数
} task_t;

/**
 * @brief  初始化线程池
 * @return 0 成功  -1 失败
 * 
 *  1 创建线程数组 并且开辟出来
 *  2  创建队列  
 */
int app_pool_init();


/**
 * @brief 定义线程池的工作内容
 * 定义线程要执行什么工作 
         每个线程启动一个死循环 不停的尝试从队列中取得任务
         解任务包
          每个任务包含a  执行函数  b 执行参数
          每个线程要取出函数 用函数执行参数 
 */



 




/**
 * @brief 提供一个对外函数 用来向线程池提交任务  
 * 
 * @param func 
 * @param arg 

 */
int  app_pool_submit_task(void *(*func)(void *),void *arg);     
 

/**
 * @brief 线程池销毁
 * 
 */
 void app_pool_destroy();


#endif // _APP_POOL
